const express = require('express')

//1.导入生成jwt字符串的包
const jwt = require('jsonwebtoken')

//2.导入将jwt字符串解析还原为json对象的包
const expressJWT = require('express-jwt')

//3.用自定义的 secret密钥，对用户信息加密
const secretKey = 'da la beng ba'


const app = express()


app.use(express.json())  //即  raw json  格式


//5.将jwt字符串还原为json对象
//expressJWT({ secret: secretKey }) 就是解析jwt的方法
//.unless({ path: [/^\/api\//]}) 用来指定哪些接口不需要访问权限
// app.use(expressJWT({ secret: secretKey }).unless({ path: [/^\/api\//]}))

//6.捕获jwt解析失败后产生的错误（token过期或不合法）
// app.use((err,req,res,next)=>{
//     //token不合法导致的错误
//     if(err.name === 'UnauthorizedError'){
//         return res.send({ status: 401 , message: '无效的token' })
//     }
//     //其他原因导致从错误
//     res.send({ status: 500 ,message: '未知错误' })
// })


//4.在用户登录成功后生成jwt字符串，响应给客户端
app.post('/api/login',(req,res)=>{
    const userInfo = req.body
    res.send({
        status:200,
        message:'登录成功',
        token: jwt.sign(
            {username:userInfo.username},
            secretKey,
            {expiresIn:'30s'}
        )
    })
})
app.get('/',(req,res)=>{
    console.log('监听到了get');
    res.send({
        status:200,
        message:'请求成功'
    })
})



app.listen(9999,()=>{
    console.log('app is running at http://127.0.0.1:9999');
})